package com.example.lin.start;

import org.junit.jupiter.api.Test;
import ws.schild.jave.Encoder;
import ws.schild.jave.MultimediaObject;
import ws.schild.jave.encode.AudioAttributes;
import ws.schild.jave.encode.EncodingAttributes;

import java.io.File;

/**
 * @className: Mp3FileReader
 * @description:
 * @author: Lin.Gu
 * @date: 2025/3/20
 */
public class Mp3FileReader {


    @Test
    public void Mp3Compressor() {
        String directoryPath = "E:\\music\\歌曲DJ250首";
        File directory = new File(directoryPath);
        String outputDirectoryPath = "E:\\music\\压缩\\歌曲DJ250首";
        // 列出目录下的所有文件
        File[] files = directory.listFiles();
        if (files != null) {
            for (File file : files) {
                // 检查文件是否为 MP3 文件
                if (file.isFile() && file.getName().toLowerCase().endsWith(".mp3")) {
                    String name = file.getName();

                    // 输入的 MP3 文件路径
                    File inputFile = new File(directoryPath + "\\" + name);
                    // 输出的压缩后 MP3 文件路径
                    File outputFile = new File(outputDirectoryPath + "\\" + name);

                    // 设置音频编码参数
                    AudioAttributes audioAttributes = new AudioAttributes();
                    // 设置音频编码器
                    audioAttributes.setCodec("libmp3lame");
                    // 设置音频比特率，值越小，压缩率越高，但音质可能会下降
                    audioAttributes.setBitRate(64000);
                    // 设置音频声道数
                    audioAttributes.setChannels(2);
                    // 设置音频采样率
                    audioAttributes.setSamplingRate(44100);

                    // 创建编码参数对象
                    EncodingAttributes encodingAttributes = new EncodingAttributes();
                    //encodingAttributes.setFormat("mp3");
                    encodingAttributes.setOutputFormat("mp3");
                    encodingAttributes.setAudioAttributes(audioAttributes);

                    // 创建编码器对象
                    Encoder encoder = new Encoder();
                    try {
                        // 执行编码（压缩）操作
                        encoder.encode(new MultimediaObject(inputFile), outputFile, encodingAttributes);
                        System.out.println("MP3 文件压缩完成！");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                }
            }
        }
    }


    @Test
    public void mp3FileReader() {
        // 指定要读取的目录，这里以 D 盘根目录为例，你可以根据需要修改
        String directoryPath = "E:\\music\\01（部分）";
        File directory = new File(directoryPath);

        // 检查目录是否存在
        if (directory.exists() && directory.isDirectory()) {
            // 列出目录下的所有文件
            File[] files = directory.listFiles();
            if (files != null) {
                for (File file : files) {
                    // 检查文件是否为 MP3 文件
                    if (file.isFile() && file.getName().toLowerCase().endsWith(".mp3")) {
                        System.out.println(file.getName());
                    }
                }
            }
        } else {
            System.out.println("指定的目录不存在或不是一个有效的目录。");
        }
    }
}
